package com.ruoyi.pack.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 运输计划表对象 transport_plan
 *
 * @author wgs
 * @date 2025-08-16
 */
public class TransportPlan extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long locatorId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long waybillId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String locatorCode;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String billNo;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String province;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String city;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String district;

    /** 预计耗时 */
    @Excel(name = "预计耗时")
    private Double estimatedDuration;

    /** 实际耗时 */
    @Excel(name = "实际耗时")
    private Double actualDuration;

    /** 到达时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "到达时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date arrivalTime;

    /** 节点类型：起点，终点，途经点 */
    @Excel(name = "节点类型：起点，终点，途经点")
    private String nodeType;

    /** 节点类型：起点，终点，途经点 */
    @Excel(name = "经过顺序")
    private int passOrder;

    /** 最大耗时偏差（从起点到当前城市，以预计时间为基础的最大耗时偏差，可正可负，单位：小时） */
    @Excel(name = "最大耗时偏差")
    private Double maxDeviation;

    /** 到达偏差（到达当前城市耗时与预计耗时的偏差小时数，保留一位小数） */
    @Excel(name = "到达偏差")
    private Double arrivalDeviation;

    /** 偏差状态（正点、提前、延迟） */
    @Excel(name = "偏差状态")
    private String deviationStatus;
    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setLocatorId(Long locatorId)
    {
        this.locatorId = locatorId;
    }

    public Long getLocatorId()
    {
        return locatorId;
    }

    public void setWaybillId(Long waybillId)
    {
        this.waybillId = waybillId;
    }

    public Long getWaybillId()
    {
        return waybillId;
    }

    public void setLocatorCode(String locatorCode)
    {
        this.locatorCode = locatorCode;
    }

    public String getLocatorCode()
    {
        return locatorCode;
    }

    public void setBillNo(String billNo)
    {
        this.billNo = billNo;
    }

    public String getBillNo()
    {
        return billNo;
    }

    public void setProvince(String province)
    {
        this.province = province;
    }

    public String getProvince()
    {
        return province;
    }

    public void setCity(String city)
    {
        this.city = city;
    }

    public String getCity()
    {
        return city;
    }

    public void setDistrict(String district)
    {
        this.district = district;
    }

    public String getDistrict()
    {
        return district;
    }

    public void setEstimatedDuration(Double estimatedDuration)
    {
        this.estimatedDuration = estimatedDuration;
    }

    public Double getEstimatedDuration()
    {
        return estimatedDuration;
    }

    public void setActualDuration(Double actualDuration)
    {
        this.actualDuration = actualDuration;
    }

    public Double getActualDuration()
    {
        return actualDuration;
    }

    public void setArrivalTime(Date arrivalTime)
    {
        this.arrivalTime = arrivalTime;
    }

    public Date getArrivalTime()
    {
        return arrivalTime;
    }

    public void setNodeType(String nodeType)
    {
        this.nodeType = nodeType;
    }

    public String getNodeType()
    {
        return nodeType;
    }

    public void setPassOrder(int passOrder)
    {
        this.passOrder = passOrder;
    }

    public int getPassOrder()
    {
        return passOrder;
    }

    public void setMaxDeviation(Double maxDeviation)
    {
        this.maxDeviation = maxDeviation;
    }

    public Double getMaxDeviation()
    {
        return maxDeviation;
    }

    public void setArrivalDeviation(Double arrivalDeviation)
    {
        this.arrivalDeviation = arrivalDeviation;
    }

    public Double getArrivalDeviation()
    {
        return arrivalDeviation;
    }

    public void setDeviationStatus(String deviationStatus)
    {
        this.deviationStatus = deviationStatus;
    }

    public String getDeviationStatus()
    {
        return deviationStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("locatorId", getLocatorId())
            .append("waybillId", getWaybillId())
            .append("locatorCode", getLocatorCode())
            .append("billNo", getBillNo())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("province", getProvince())
            .append("city", getCity())
            .append("district", getDistrict())
            .append("estimatedDuration", getEstimatedDuration())
            .append("actualDuration", getActualDuration())
            .append("arrivalTime", getArrivalTime())
            .append("nodeType", getNodeType())
            .append("passOrder", getPassOrder())
            .append("maxDeviation", getMaxDeviation())
            .append("arrivalDeviation", getArrivalDeviation())
            .append("deviationStatus", getDeviationStatus())
            .toString();
    }
}
